Como ajustar quantidade de colunas em um union no banco de dados?
Usa-se campos NULL nos selects com menor número de colunas.
Um erro bem comum ao tentar usar o UNION em banco de dados SQL é fazer os selects chamando quantidade de colunas diferentes. Para ele funcionar a quantidade de colunas dos selects deve ser a mesma, para ficar simétrico.
Em uma consulta simples ficaria assim, por exemplo:
SELECT campo1, campo2 FROM tabela
union
SELECT campo3, campo4 FROM tabela
Se a consulta fosse feita assim:
SELECT campo1, campo2 FROM tabela
union
SELECT campo3 FROM tabela
Não iria funcionar. No mySql em português retornaria a mensagem de erro:
#1222 - Os comandos SELECT usados têm diferente número de colunas
Se for necessário fazer a consulta com quantidades diferentes de campos, deve ser informada na consulta de menor quantidade de campos, um campo com valor nulo.
Ficando assim:
SELECT campo1, campo2 FROM tabela
union
SELECT campo3, null FROM tabela